home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / misc / bar.sty < prev    next >
Text File  |  1994-04-19  |  18KB  |  549 lines

  1. %       BAR.STY --- Style File zum Setzen von Balkendiagrammen
  2. %       Autor:  J. Bleser, E. Lang
  3. %       Hochschulrechenzentrum
  4. %       Technische Hochschule Darmstadt
  5. %       !!!  Dieses Style-File ist urheberrechtlich geschuetzt  !!!
  6. %       !!!  Aenderungen nur mit Zustimmung der Autoren         !!!
  7. \typeout{Option BAR, Version 1.0  Sep. 92, J.Bleser, TH Darmstadt, HRZ}
  8. \typeout{bug fix for CTAN April 1994 (SPQR, for David Carlisle)}
  9. \newcount\breite        \newcount\hoehe         \newcount\tiefe
  10. \newcount\lhoehe        \newcount\anzbar        \newcount\hbarI
  11. \newcount\xpos          \newcount\lxpos         \newcount\halfbreite
  12. \newcount\ypos          \newcount\lypos
  13. \newcount\tmpa          \newcount\tmpb         \newcount\tmpc
  14. \newcount\tmpd          \newcount\tmpe
  15. \newcount\xmin          \newcount\xmax          \newcount\xstep
  16. \newcount\deltax        \newcount\yhoehe        %
  17. \newcount\ymin          \newcount\ymax          \newcount\ystep
  18. \newcount\yminII        \newcount\ymaxII        \newcount\deltay
  19. \newcount\ymove         \newcount\xmove         \newcount\inter
  20. \newcount\exact         \newcount\xexact
  21. \newdimen\dtmpa         \newdimen\dtmpb
  22. \newdimen\dmin          \newdimen\dmax          \newdimen\dstep
  23. \newdimen\dxmin         \newdimen\dxmax         \newdimen\dxstep
  24. \newdimen\faktor        \newdimen\dinter
  25. \newbox\mybox           \newbox\xbox            \newbox\ybox
  26. \newif\if@xaxis         \newif\if@yaxis
  27. \newif\if@hlineon
  28. \newif\iffaktor\faktorfalse
  29.  
  30.  
  31. \def\setnumberpos#1{\def\my@number{\expandafter\csname my@#1\endcsname}}
  32. \def\my@number{\my@outside}
  33.  
  34.  
  35. \def\m@nth{month}\def\d@y{day}
  36. \def\setxvaluetyp#1{\gdef\x@value{#1}%
  37.   \ifx\x@value\m@nth\let\myx@value\Monat@%
  38.   \else\ifx\x@value\d@y\let\myx@value\Tag@%
  39.   \else\let\myx@value\Zahl@n%
  40.   \fi%
  41.   \fi%
  42. }
  43.  
  44.  
  45. \def\solid{solid}\gdef\l@style{\relax}
  46. \def\setlinestyle#1{\gdef\l@style{#1}%
  47.   \ifx\l@style\solid\let\my@lstyle=\mylinebox%
  48.   \else\let\my@lstyle=\mydotbox%
  49.   \fi%
  50. }
  51.  
  52.  
  53. \def\setwidth#1{\global\breite=#1%
  54.   \ifdim\dinter>0pt\inter\dinter\multiply\inter\breite\divide\inter65536\fi%
  55.   \halfbreite\breite\divide\halfbreite2%
  56. }
  57.  
  58.  
  59. \def\setdepth#1{\ifnum#1<10\global\tiefe=0\else\global\tiefe=#1\fi}
  60.  
  61.  
  62. \def\setstretch#1{\global\faktor=#1pt\faktortrue}
  63.  
  64.  
  65. \def\setstyle#1{\def\my@style{#1}}
  66. \def\my@style{\tt}
  67.  
  68.  
  69. \def\setprecision#1{\global\exact=#1}
  70. \exact=0
  71.  
  72.  
  73. \def\sethspace#1{\dinter#1pt\dtmpa#1pt\multiply\dtmpa\breite%
  74.   \inter\dtmpa\divide\inter65536%
  75. }
  76.  
  77.  
  78. \def\setxname{\@ifnextchar [{\isetxname}{\isetxname[]}}
  79. \def\isetxname[#1]#2{\global\setbox\xbox=\hbox{\makebox(0,0)[#1]{#2}}}
  80.  
  81.  
  82. \def\setyname{\@ifnextchar [{\isetyname}{\isetyname[l]}}
  83. \def\isetyname[#1]#2{\global\setbox\ybox=\hbox{\makebox(0,0)[#1]{#2}}}
  84.  
  85.  
  86. \newcount\vorz       %
  87. \def\setyaxis{\@ifnextchar [{\i@setyaxis}{\i@setyaxis[0]}}
  88. \def\i@setyaxis[#1]#2#3#4{%
  89.  \dmin#2\faktor\ymin\dmin\divide\ymin by65536%
  90.  \dmax#3\faktor\ymax\dmax\divide\ymax by65536%
  91.  \ifnum\ymin>\ymax\vorz-1\else\vorz1\fi%
  92.  \ifnum\ymin>0\ymin-\ymin\fi%
  93.  \ifnum\ymax<0\ymax-\ymax\fi%
  94.  \dstep#4\faktor\ystep\dstep\divide\ystep by65536%
  95.  \ifnum\ystep<0\ystep-\ystep\fi%
  96.  \@yaxistrue%
  97.  \setbox0=\hbox{\the\ymax}\setbox1=\hbox{\the\ymin}
  98.  \ifdim\wd0>\wd1\xmove=\wd0\else\xmove=\wd1\fi%
  99.  \divide\xmove by65536\advance\xmove by4%
  100.  \global\xmove=\the\xmove%
  101.  \deltay\ymax\advance\deltay-\ymin\tmpb\deltay%
  102.  \divide\deltay\ystep%
  103.  \advance\deltay by1%
  104.  \dmin=#2pt\dstep=#4pt%
  105.  \thicklines%
  106.  \multiput(0,\ymin)(0,\ystep){\deltay}{\line(-1,0){4}%
  107.    \put(-6,0){\makebox(0,0)[r]{{\my@style\dimIIreal\dmin}}%
  108.    \global\advance\dmin by\dstep}}%
  109.  \dtmpa=#1\faktor\ymove\dtmpa\divide\ymove by65536\ifnum\ymove<0\ymove=0\fi%
  110.  \tmpa\ymin\advance\tmpa by-\ymove\advance\tmpb by\ymove%
  111.  \global\yhoehe\tmpb            %
  112.  \put(0,\tmpa){\line(0,1){\tmpb}}%
  113.  \thinlines%
  114. }
  115.  
  116.  
  117. \def\setxaxis#1#2#3{%
  118.  \dxmin#1pt\dxmax#2pt\dxstep#3pt\global\xexact\exact%
  119.  \@xaxistrue\let\mytmp@style=\my@style%
  120. }
  121.  
  122.  
  123. \def\hlineon{\global\@hlineontrue}
  124.  
  125.  
  126. \def\bar#1#2{\@ifnextchar [{\@bar{#1}{#2}}{\@bar{#1}{#2}[]}}
  127. \def\@bar#1#2[#3]{%
  128.  \dtmpa#1\faktor\hoehe\dtmpa\divide\hoehe by65536%
  129.  \multiply\hoehe\vorz%
  130.  \ypos0\def\@user{#1}%
  131.  \ifnum\hoehe<\yminII\yminII=\hoehe\fi\ifnum\hoehe>\ymaxII\ymaxII=\hoehe\fi%
  132.  \ifnum\anzbar=0\hbarI=\hoehe\fi%
  133.  \ifnum#2>-1%
  134.    \ifnum\hoehe<0\ypos=\hoehe\tmpa=-\hoehe\else\tmpa=\hoehe\fi%
  135.    \ifnum #2=1\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}\fi%
  136.    \ifnum #2=2\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  137.      \tmpc=\breite\divide\tmpc by3\tmpb=\xpos\advance\tmpb by1%
  138.      \multiput(\tmpb,\ypos)(3,0){\tmpc}{\line(0,1){\tmpa}}%
  139.    \fi
  140.    \ifnum #2=3\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  141.      \tmpc=\tmpa\divide\tmpc by3\tmpb=\ypos\advance\tmpb by1%
  142.      \multiput(\xpos,\tmpb)(0,3){\tmpc}{\line(1,0){\breite}}%
  143.    \fi
  144.    \ifnum #2=4\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  145.      \tmpc=\breite\divide\tmpc by3\tmpb=\xpos\advance\tmpb by1%
  146.      \multiput(\tmpb,\ypos)(3,0){\tmpc}{\line(0,1){\tmpa}}%
  147.      \tmpc=\tmpa\divide\tmpc by3\tmpb=\ypos\advance\tmpb by1%
  148.      \multiput(\xpos,\tmpb)(0,3){\tmpc}{\line(1,0){\breite}}%
  149.    \fi
  150.    \ifnum #2=5\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  151.      \tmpc=\breite\divide\tmpc by4\tmpb=\xpos\advance\tmpb by1%
  152.      \multiput(\tmpb,\ypos)(4,0){\tmpc}{\rule{2pt}{\tmpa pt}}%
  153.      \tmpc=\tmpa\divide\tmpc by4\tmpb=\ypos\advance\tmpb by1%
  154.      \multiput(\xpos,\tmpb)(0,4){\tmpc}{\rule{\breite pt}{2pt}}%
  155.    \fi
  156.    \ifnum #2=6\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  157.      \tmpb=\breite\divide\tmpb by-2%
  158.      \ifnum\hoehe>0\advance\tmpb by\tmpa\fi%
  159.      \tmpc=\tmpa\divide\tmpc by4%
  160.      \multiput(\xpos,\ypos)(0,4){\tmpc}{%
  161.        \ifdim\@ydim<\tmpb pt\line(2,1){\breite}%
  162.        \else\tmpd=\@ydim\divide\tmpd by65536%
  163.          \ifnum\tmpd<0\else\advance\tmpd by-\tmpa\fi%
  164.          \multiply\tmpd by-2\line(2,1){\tmpd}%
  165.        \fi%
  166.      }%
  167.      \tmpb=\breite\divide\tmpb by8\tmpc=\breite\advance\tmpc by-8%
  168.      \tmpd=\tmpa\multiply\tmpd 2\advance\xpos by 8%
  169.      \multiput(\xpos,\ypos)(8,0){\tmpb}{%
  170.        \ifnum\tmpc<\tmpd\line(2,1){\tmpc}\else\line(2,1){\tmpd}\fi%
  171.        \global\advance\tmpc by-8%
  172.      }%
  173.      \advance\xpos by -8%
  174.    \fi%
  175.    \ifnum #2=7\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  176.      \tmpb=\breite\divide\tmpb by2%
  177.      \ifnum\hoehe>0\ypos=\hoehe\else\ypos=0\advance\tmpb by-\tmpa\fi%
  178.      \tmpc=\tmpa\divide\tmpc by4%
  179.      \multiput(\xpos,\ypos)(0,-4){\tmpc}{%
  180.        \ifdim\@ydim<\tmpb pt\tmpd=\@ydim\divide\tmpd by65536%
  181.          \ifnum\tmpd<0\advance\tmpd by\tmpa\fi%
  182.          \multiply\tmpd by2\line(2,-1){\tmpd}%
  183.        \else\line(2,-1){\breite}%
  184.        \fi%
  185.      }%
  186.      \tmpb=\breite\divide\tmpb by8\advance\tmpb by 1\tmpc=\breite%
  187.      \tmpd=\tmpa\multiply\tmpd 2%
  188.      \multiput(\xpos,\ypos)(8,0){\tmpb}{%
  189.        \ifnum\tmpc>\tmpd\line(2,-1){\tmpd}\else\line(2,-1){\tmpc}\fi%
  190.        \global\advance\tmpc by-8%
  191.      }%
  192.    \fi%
  193.    \ifnum #2=8\put(\xpos,\ypos){\rule{\breite pt}{\tmpa pt}}\fi
  194.    \my@number%
  195.  \fi%
  196.  \tmpc-\baselineskip\divide\tmpc 65536%
  197.  \divide\tmpc 2%
  198.  \put(\xpos,\ypos){\put(0,\tmpc){\makebox(\breite,0){#3}}}%
  199.  \ifnum\anzbar>0
  200.   \ifnum\tiefe>0
  201.     \ifnum\lhoehe<\hoehe
  202.         \ifnum\lhoehe>0\machDachI(\lxpos,\lhoehe)
  203.         \else\machDachI(\lxpos,0)
  204.         \fi
  205.     \else
  206.         \ifnum\lhoehe>0\machDachII(\lxpos,\lhoehe)
  207.         \else\machDachII(\lxpos,0)
  208.         \fi
  209.     \fi%
  210.   \fi%
  211.   \if@hlineon\machHLines\fi%
  212.  \fi%
  213.  \lxpos\xpos\advance\xpos\breite\advance\xpos\inter%
  214.  \advance\anzbar1\lhoehe\hoehe%
  215. }
  216.  
  217.  
  218. \newenvironment{barenv}%
  219. {\par%
  220.  \xpos0\breite40\halfbreite20\tiefe0\lhoehe0\anzbar0%
  221.  \yminII0\ymaxII0\inter0\dinter0pt\vorz1%
  222.  \exact0\ymove0\xmove0\unitlength1pt\@xaxisfalse\@yaxisfalse\@hlineonfalse%
  223.  \let\my@lstyle=\mydotbox\let\myx@value=\Zahl@n%
  224.  \faktor1pt%
  225.  \def\vline{\my@vline}%
  226.  \def\hspace{\my@hspace}%
  227.  \setbox\@tempboxa=\hbox\bgroup%
  228.    \begin{picture}(0,0)\thinlines%
  229. }%
  230. {%
  231.    \advance\xpos by-\inter%
  232.    \ifnum\tiefe>0
  233.      \put(\xpos,0){\line(1,1){\tiefe}}%
  234. %%%DPC CHANGE
  235. %     \put(\xpos,\hoehe){\line(1,1){\tiefe}\put(0,\tiefe){\line(0,1){-\hoehe}}}%
  236.      \put(\xpos,\hoehe){\line(1,1){\tiefe}%
  237.      \put(0,\tiefe){\ifnum\hoehe<\z@\line(0,1){-\hoehe}\fi}}%
  238. %%%END DPC CHANGE
  239.    \fi%
  240.    \deltax=\lhoehe\bar{0}{-1}\lhoehe=\deltax%
  241.    \thicklines%
  242.    \if@yaxis\else\tmpa=\ymaxII\advance\tmpa by-\yminII\advance\tmpa by\tiefe%
  243.      \put(0,\yminII){\line(0,1){\tmpa}}%
  244.    \fi%
  245.    \if@xaxis%
  246.      \advance\ymin by-\ymove%
  247.      \tmpe=\exact\global\exact=\xexact%
  248.      \put(0,\ymin){\line(1,0){\lxpos}}%
  249.      \xstep=\dxstep\divide\xstep by65536%
  250.      \dtmpa=\dxmax\advance\dtmpa by-\dxmin%
  251.      \deltax=\dtmpa\divide\deltax by65536\divide\deltax by\xstep%
  252.      \advance\deltax by1%
  253.      \tmpa=\breite\divide\tmpa by2%
  254.      \tmpb=\breite\advance\tmpb by\inter%
  255.      \multiput(\tmpa,\ymin)(\tmpb,0){\deltax}{%
  256.        \line(0,-1){4}\myx@value\dxmin%
  257.        \global\advance\dxmin by\dxstep}%
  258.      \global\exact=\tmpe%
  259.    \fi%
  260.    \put(0,0){\line(1,0){\lxpos}}%
  261.    \if@xaxis\tmpa=-20\else\tmpa=-10\fi%
  262.    \ifvoid\xbox\else\put(\lxpos,\ymin){\put(0,\tmpa){\box\xbox}}\fi%
  263.    \tmpa=\ymax\advance\tmpa by6\advance\tmpa by\tiefe%
  264.    \ifvoid\ybox\else\put(\tiefe,\tmpa){\box\ybox}\fi%
  265.    \if@hlineon%
  266.      \ifnum\lhoehe<0%
  267.        \tmpb=-\ymin\advance\tmpb by\lhoehe%
  268.        \advance\tmpb by\ymove\divide\tmpb by\ystep%
  269.        \tmpa=\ymin\advance\tmpa by\tiefe\advance\tmpa by\ymove%
  270.        \multiput(\lxpos,\tmpa)(0,\ystep){\tmpb}{%
  271.          \ifdim\@ydim<\lhoehe pt%
  272.          \else\ypos=-\@ydim\divide\ypos by65536%
  273.               \advance\ypos by\lhoehe\advance\ypos by\tiefe%
  274.               \tmpe=\tiefe\advance\tmpe by-\ypos%
  275.               \ifnum\ypos>0\put(\tmpe,0){\thinlines\my@lstyle\ypos}\fi%
  276.          \fi%
  277.        }%
  278.      \fi%
  279.      \put(0,\ymin){\line(1,0){\lxpos}}%
  280.      \tmpa=\ymax\advance\tmpa by-\ymin%
  281.      \ifnum\tiefe>0
  282.        \put(0,\ymax){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\lxpos}%
  283.          \line(0,-1){\tmpa}\put(0,-\tmpa){\line(-1,-1){\tiefe}}}}%
  284.      \else\put(0,\ymax){\line(1,0){\lxpos}\line(0,-1){\tmpa}}%
  285.      \fi%
  286.      \thinlines%
  287.      \ifnum\hbarI<0\tmpa=-\ymin\advance\tmpa by\hbarI\advance\tmpa by-\tiefe%
  288.        \put(\tiefe,\tiefe){\line(0,1){\ymax}}%
  289.        \put(\tiefe,\hbarI){\line(0,-1){\tmpa}}%
  290.      \else\tmpa=\ymax\advance\tmpa by-\hbarI\advance\ymax by\tiefe%
  291.        \put(\tiefe,\ymax){\line(0,-1){\tmpa}}%
  292.        \ifnum\ymin<0\tmpa=\ymin%
  293.          \advance\tmpa by\tiefe\put(\tiefe,\tmpa){\line(0,1){-\tmpa}}%
  294.        \fi%
  295.      \fi%
  296.      \ifnum\hbarI<0\tmpa=\hbarI\tmpb=0\else\tmpa=0\tmpb=\hbarI\fi%
  297.      \tmpc=-\ymin\advance\tmpc \tmpa%
  298.      \ifnum\tmpc>\tiefe\tmpc=\tiefe\fi
  299.      \ifnum\ymove>0\put(0,\ymin){\line(1,1){\tmpc}}\fi%
  300.      \advance\ymin by\ymove%
  301.      \multiput(0,\ymin)(0,\ystep){\deltay}{%
  302.        \ifdim\@ydim<\tmpa pt%
  303.          \tmpc=-\@ydim\divide\tmpc by65536\advance\tmpc by\tmpa%
  304.          \ifnum\tmpc>\tiefe\tmpc=\tiefe\fi%
  305.          \ifx\l@style\solid\line(1,1){\tmpc}%
  306.          \else\divide\tmpc by 3\multiput(0,0)(3,3){\tmpc}{.}%
  307.          \fi%
  308.        \else\ifdim\@ydim>\tmpb pt%
  309.               \ifx\l@style\solid\line(1,1){\tiefe}%
  310.               \else\tmpe=\tiefe\divide\tmpe by3\multiput(0,0)(3,3){\tmpe}{.}%
  311.               \fi%
  312.             \fi%
  313.        \fi%
  314.      }%
  315.    \fi%
  316.    \thinlines%
  317.    \ifnum\ymaxII<\ymax\global\ymaxII=\ymax\else\global\ymaxII=\ymaxII\fi%
  318.    \ifnum\yminII>\ymin\global\yminII=\ymin\else\global\yminII=\yminII\fi%
  319.    \global\advance\yminII by-\ymove%
  320.    \global\xpos=\the\xpos\global\advance\xpos by20%
  321.    \end{picture}
  322.  \egroup%
  323.  \global\advance\ymaxII by\tiefe\advance\ymaxII by-\yminII%
  324.  \advance\xpos by-\breite%
  325.  \begin{picture}(\the\xpos,\the\ymaxII)
  326.   \put(\xmove,-\yminII){\box\@tempboxa}
  327.  \end{picture}
  328.  \faktorfalse
  329. }
  330.  
  331.  
  332. \def\legend#1#2{%
  333.  \begin{picture}(20,10)
  334.    \put(0,0){\framebox(20,10){}}
  335.    \ifnum #1=2\multiput(1,0)(3,0){7}{\line(0,1){10}}\fi%
  336.    \ifnum #1=3\multiput(0,1)(0,3){3}{\line(1,0){20}}\fi%
  337.    \ifnum #1=4\multiput(1,0)(3,0){7}{\line(0,1){10}}%
  338.      \multiput(0,1)(0,3){3}{\line(1,0){20}}%
  339.    \fi%
  340.    \ifnum #1=5\multiput(1,0)(4,0){5}{\rule{2pt}{10pt}}%
  341.      \multiput(0,2)(0,4){2}{\rule{20pt}{2pt}}%
  342.    \fi%
  343.    \ifnum #1=6%
  344.     \put(0,0){\line(2,1){20}}\put(0,4){\line(2,1){13}}\put(8,0){\line(2,1){12}}%
  345.    \fi%
  346.    \ifnum #1=7%
  347.     \put(0,10){\line(2,-1){20}}\put(0,6){\line(2,-1){12}}%
  348.     \put(8,10){\line(2,-1){12}}%
  349.    \fi%
  350.    \ifnum #1=8\put(0,0){\rule{20\unitlength}{10\unitlength}}\fi%
  351.  \end{picture}%
  352.  \quad#2%
  353. }
  354.  
  355.  
  356.  
  357. \def\my@vline{%
  358.   \tmpa\ymin\advance\tmpa-\ymove%
  359.   \put(\xpos,\tmpa){\line(0,1){\yhoehe}}
  360. }
  361.  
  362.  
  363. \def\my@hspace#1{%
  364.   \dtmpa#1pt\multiply\dtmpa\breite%
  365.   \tmpa\dtmpa\divide\tmpa65536%
  366.   \global\advance\xpos\tmpa
  367. }
  368.  
  369.  
  370.  
  371. \def\mydotbox#1{\tmpe=#1\advance\tmpe by2\lower0.8pt\hbox to\tmpe pt{\dotfill}}
  372.  
  373.  
  374. \def\mylinebox#1{\line(1,0){#1}}
  375.  
  376.  
  377. %  Parameter:  umzuwandelnde Dimension.
  378. \def\dimIIreal#1{%
  379.   \dtmpa=#1\tmpa=\dtmpa\divide\tmpa by65536\advance\dtmpa by-\tmpa pt%
  380.   \the\tmpa\ifnum\exact>0,\fi%
  381.   \tmpb=\exact%
  382.   \@whilenum\tmpb>0\do{%
  383.     \advance\dtmpa by0.05pt\dtmpa=10\dtmpa\advance\dtmpa by-0.5pt%
  384.     \tmpa=\dtmpa\divide\tmpa by65536\advance\dtmpa by-\tmpa pt%
  385.     \the\tmpa\advance\tmpb by-1}%
  386. }
  387.  
  388.  
  389. \def\machDachI(#1,#2){%
  390.  \tmpa=\hoehe\advance\tmpa by-#2\tmpd=\tmpa\ifnum\tmpd<0\tmpd=-\tmpd\fi%
  391.  \ifnum\hoehe<0\machDachII(#1,#2)%
  392.  \else
  393.    \tmpb=\breite\advance\tmpb by-\tiefe%
  394.    \advance\tmpb by\inter%
  395.    \ifnum\tmpa<\tiefe\advance\tmpa by-\tiefe\advance\tmpb by-\tmpa\fi%
  396.    \ifnum\tmpb>\breite\tmpb=\breite\fi%
  397.    \ifnum\breite<\tiefe\put(#1,#2){\line(1,1){\breite}}%
  398.    \else\put(#1,#2){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\tmpb}}}%
  399.    \fi%
  400.  \fi%
  401.  \tmpa=#1\advance\tmpa by\breite%
  402.  \ifnum\inter>0%
  403.    \ifnum\tmpd<\inter\tmpb=\tiefe\else\tmpb=\inter\fi%
  404.    \put(\tmpa,\lhoehe){\line(1,1){\tmpb}}%
  405.  \fi%
  406.  \ifnum\lhoehe<0\put(\tmpa,\lhoehe){%
  407.    \ifnum\hoehe<0\tmpb=-\lhoehe\advance\tmpb by\hoehe%
  408.      \ifnum\tmpb>\tiefe\tmpa=\tiefe\else\tmpa=\tmpb\tmpb=0\fi%
  409.      \line(1,1){\tmpa}\put(0,\tmpa){\advance\tmpb by-\tiefe\line(0,1){\tmpb}}%
  410.    \else\tmpa=-\lhoehe\advance\tmpa by-\tiefe%
  411.      \ifnum-\lhoehe<\tiefe\tmpb=-\lhoehe\else\tmpb=\tiefe\fi%
  412.      \line(1,1){\tmpb}\put(0,\tmpb){\line(0,1){\tmpa}}%
  413.    \fi%
  414.   }%
  415.  \fi
  416. }
  417.  
  418.  
  419. \def\machDachII(#1,#2){%
  420.  \tmpa=#1\advance\tmpa by\breite\tmpb=0%
  421.  \ifnum\hoehe>0\ifnum\lhoehe<0\tmpb=\lhoehe\fi
  422.    \put(\tmpa,\tmpb){\line(1,1){\inter}}
  423.  \else\put(\tmpa,0){\line(1,1){\tiefe}}
  424.  \fi
  425.  \ifnum\hoehe<0\tmpa=\lhoehe\else\tmpa=\lhoehe\advance\tmpa by-\hoehe\fi
  426.  \ifnum\tmpa<0\tmpa=\inter\else\advance\tmpa by\inter\fi%
  427.  \put(#1,#2){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\breite}%
  428.    \line(0,-1){\tmpa}\line(-1,-1){\tiefe}}}%
  429. }
  430.  
  431.  
  432. \def\machHLinesI{%
  433.  \tmpc=\breite\advance\tmpc by2%
  434.  \setbox\mybox=\hbox to\tmpc pt{\dotfill}
  435.  \multiput(\lxpos,\ymin)(0,\ystep){\deltay}{%
  436.   \ifdim\@ydim<\tmpa pt\lower0.8pt\copy\mybox\fi%
  437.   \ifdim\@ydim>\tmpb pt\lower0.8pt\copy\mybox\fi%
  438.  }
  439. }
  440.  
  441.  
  442. \def\machHLinesII{%
  443.  \multiput(\lxpos,\lypos)(0,\ystep){\deltay}{%
  444.   \ifdim\@ydim<\tmpa pt%
  445.     \ifdim\@ydim>\tmpc pt\ypos=\breite\advance\ypos by-\tiefe%
  446.     \else\ypos=\breite%
  447.     \fi%
  448.     \my@lstyle\ypos
  449.   \else%
  450.     \ifdim\@ydim>\tmpc pt%
  451.     \else%
  452.        \ypos=-\@ydim\divide\ypos by65536%
  453.        \advance\ypos by\lhoehe\advance\ypos by\tiefe%
  454.        \tmpe=\breite\advance\tmpe by-\ypos%
  455.        \ifnum\ypos>0\ifnum\tmpe>0\put(\tmpe,0){\my@lstyle\ypos}\fi\fi%
  456.     \fi%
  457.   \fi%
  458.   \ifdim\@ydim>\tmpb pt%
  459.    \ypos=\breite\advance\ypos by-\tiefe%
  460.    \ifdim\@ydim>\tmpd pt\ypos=\breite%
  461.    \else\ifdim\@ydim<\hoehe pt%
  462.         \else\tmpe=\@ydim\divide\tmpe by65536\advance\tmpe by-\hoehe%
  463.           \advance\ypos by\tmpe%
  464.         \fi%
  465.    \fi%
  466.    \my@lstyle\ypos
  467.   \fi%
  468.  }%
  469. \ifnum\ymove>0%
  470.   \tmpb=\ymin\advance\tmpb by-\ymove\advance\tmpb by\tiefe%
  471.   \ifnum\lhoehe>\tmpb\ypos=\breite%
  472.     \ifnum\hoehe<\tmpb\advance\ypos by-\tiefe\fi%
  473.     \put(\lxpos,\tmpb){\line(1,0){\ypos}}
  474.   \fi%
  475. \fi%
  476. }
  477.  
  478.  
  479. \def\machHLines{%
  480.  \tmpe=\baselineskip\divide\tmpe by65536\advance\tmpe by3%
  481.  \ifnum\lhoehe<0\tmpa=\lhoehe\tmpb=0\else\tmpa=0\tmpb=\lhoehe\fi%
  482.  \ifnum\hoehe<0\tmpc=\hoehe\tmpd=0\else\tmpc=0\tmpd=\hoehe\fi%
  483.  \advance\tmpb by\tiefe\advance\tmpd by\tiefe%
  484.  \advance\lxpos by\tiefe%
  485.  \lypos=\ymin\advance\lypos by\tiefe%
  486.  \machHLinesII%
  487. }
  488.  
  489.  
  490. \def\@user{}
  491. \def\my@empty{}
  492. \def\my@inside{%
  493.  \ifnum\hoehe<0\put(\xpos,\hoehe){\makebox(\breite,\tmpa){{\my@style\@user}}}%
  494.  \else\put(\xpos,0){\makebox(\breite,\tmpa){{\my@style\@user}}}%
  495.  \fi%
  496. }
  497. \def\my@outside{%
  498.   \tmpa=\hoehe%
  499.   \ifnum\hoehe<0\advance\tmpa by-6\else\advance\tmpa by\tiefe\advance\tmpa by6%
  500.   \fi%
  501.   \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos%
  502.   \ifnum\hoehe>0\advance\tmpb by\tiefe\fi%
  503.   \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
  504. }
  505. \def\my@up{%
  506.   \ifnum\hoehe>0\tmpa=\hoehe\advance\tmpa by\tiefe\advance\tmpa by8%
  507.   \else\tmpa=\tiefe\advance\tmpa by8%
  508.   \fi%
  509.   \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos\advance\tmpb by\tiefe%
  510.   \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
  511. }
  512. \def\my@down{%
  513.    \ifnum\hoehe>0\tmpa=-6\else\tmpa=\hoehe\advance\tmpa by-6\fi%
  514.    \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos%
  515.    \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
  516. }
  517. \def\my@axis{%
  518.    \ifnum\hoehe>0\tmpa=-6\else\tmpa=6\fi%
  519.    \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos%
  520.    \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
  521. }
  522.  
  523.  
  524. \def\Monat@#1{%
  525.  \tmpd=#1\divide\tmpd by65536\tmpd=\the\tmpd%
  526.  \tmpc=\tmpd\divide\tmpc by12\multiply\tmpc by12\advance\tmpd -\tmpc%
  527.  \put(0,-10){\makebox(0,0){{\mytmp@style%
  528.    \ifcase\tmpd Dez\or Jan\or Feb\or M\"ar\or Apr\or Mai\or Jun\or Jul%
  529.     \or Aug\or Sep\or Okt\or Nov%
  530.    \fi%
  531.  }}}%
  532. }
  533.  
  534.  
  535. \def\Tag@#1{%
  536.  \tmpd=#1\divide\tmpd by65536\tmpd=\the\tmpd%
  537.  \tmpc=\tmpd\divide\tmpc by7\multiply\tmpc by7\advance\tmpd -\tmpc%
  538.  \put(0,-10){\makebox(0,0){{\mytmp@style%
  539.    \ifcase\tmpd Son\or Mon\or Die\or Mit\or Don\or Fre\or Sam\fi%
  540.  }}}%
  541. }
  542.  
  543.  
  544. \def\Zahl@n#1{%
  545.  \dtmpa=#1%
  546.  \put(0,-10){\makebox(0,0){{\mytmp@style\dimIIreal\dxmin}}}%
  547. }
  548. \endinput
  549.